home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1979-12-31 | 2.5 KB | 113 lines |
- 10 KEY(1) ON
- 20 DIM A(85),B(85),C(85),P(85),SUM(85)
- 30 CLS
- 40 PRINT"This program generates line automatons."
- 45 PRINT:PRINT"and follows the general scheme given in the computer recreation"
- 47 PRINT:PRINT"column of SCIENTIFIC AMERICAN."
- 50 PRINT:PRINT"This particular program uses only two states(on=1 or off=0)."
- 55 PRINT:PRINT"A handy tip; if you want to stop the program"
- 57 PRINT"during execution just hit F1."
- 60 PRINT:PRINT"Before starting,if you would like printout during operation"
- 70 PRINT"please input y";
- 80 CMD$=INKEY$:IF CMD$="" THEN 80
- 85 IF CMD$=CHR$(89) THEN ANS$="y"
- 87 IF CMD$=CHR$(121) THEN ANS$="y"
- 90 PRINT:PRINT:PRINT"Enter the radius for play";
- 100 INPUT R
- 110 PRINT:PRINT"This gives you a maximum sum of";(2*R)+1;"for any element."
- 120 PRINT:PRINT"Now enter the next state of the element for each sum."
- 130 N=(2*R)+1
- 140 FOR S=0 TO N
- 150 PRINT"Now enter new value for sum=";S;
- 160 INPUT P(S)
- 170 SUM(S)=S
- 180 NEXT S
- 190 CLS
- 200 PRINT"If you would like to input your own data hit RETURN."
- 210 PRINT"Otherwise a random input set is used."
- 220 CMD$=INKEY$:IF CMD$="" THEN 220
- 224 IF CMD$=CHR$(13) THEN 250
- 230 CLS:GOSUB 610
- 240 CLS:GOTO 300
- 250 CLS:PRINT "Now enter input values (up to 80)."
- 260 FOR I=1 TO 81
- 270 PRINT"Input";I:
- 280 INPUT A(I)
- 290 NEXT I
- 300 CLS
- 305 LPRINT CHR$(27)"m"CHR$(4)
- 310 GOSUB 800
- 320 FOR I=1 TO 80
- 330 A(0)=A(81):A(82)=A(1)
- 340 C(I)=0
- 345 ON KEY(1)GOSUB 910
- 350 FOR Z=I-R TO I+R
- 360 IF Z<0 THEN Z=1
- 370 C(I)=C(I)+A(Z)
- 380 NEXT Z
- 390 FOR S=0 TO N
- 400 IF C(I)=SUM(S) THEN B(I)=P(S)
- 410 NEXT S
- 420 A$=CHR$(178)
- 430 B$=" "
- 440 IF B(I)=0 THEN 470
- 450 PRINT A$;
- 455 IF ANS$="y" THEN LPRINT CHR$(140);
- 460 GOTO 480
- 470 PRINT B$;
- 475 IF ANS$="y" THEN LPRINT B$;
- 480 NEXT I
- 490 FOR I=1 TO 81
- 500 A(I)=B(I)
- 510 NEXT I
- 520 ON KEY(1) GOSUB 910
- 530 GOTO 320
- 540 CLS:PRINT"GLIDER is over.Would you like a copy of the comparison table for the run(Y or N)";
- 550 CMD$=INKEY$:IF CMD$="" THEN 550
- 554 IF CMD$=CHR$(89) THEN GOSUB 660
- 556 IF CMD$=CHR$(121) THEN GOSUB 660
- 560 PRINT:PRINT"Would you like a copy of the data input (Y or N)";
- 570 CMD$=INKEY$:IF CMD$="" THEN 570
- 574 IF CMD$=CHR$(89) THEN GOSUB 730
- 576 IF CMD$=CHR$(121) THEN GOSUB 730
- 580 PRINT:PRINT"Would you like to continue (Y or N)";
- 590 CMD$=INKEY$:IF CMD$="" THEN 590
- 595 IF CMD$=CHR$(78) THEN 600
- 597 IF CMD$=CHR$(110) THEN 600
- 598 GOTO 60
- 600 END
- 610 RANDOMIZE
- 620 FOR I=35 TO 45
- 630 IF 1*RND<0.5 THEN A(I)=0 ELSE A(I)=1
- 640 NEXT I
- 642 FOR I=1 TO 34:A(I)=0:NEXT
- 644 FOR I=46 TO 80:A(I)=0:NEXT
- 650 RETURN
- 660 L1$="SUM"
- 670 L2$="NEWSTATE"
- 680 LPRINT,USING "\ \ \ \";L1$;L2$
- 690 FOR S=0 TO N
- 700 LPRINT,USING " ## ##";S;P(S)
- 710 NEXT S
- 720 RETURN
- 730 L3$="NO."
- 740 L4$="INPUT VALUE"
- 750 LPRINT, USING"\ \ \ \";L3$;L4$
- 760 FOR I=1 TO 81
- 770 LPRINT,USING" ## ##";I;A(I)
- 780 NEXT I
- 790 RETURN
- 800 A$=CHR$(178)
- 810 B$=" "
- 820 FOR I=1 TO 80
- 830 IF A(I)=0 THEN 870
- 840 PRINT A$;
- 850 IF ANS$="y" THEN LPRINT CHR$(140);
- 860 GOTO 890
- 870 PRINT B$;
- 880 IF ANS$="y" THEN LPRINT B$;
- 890 NEXT I
- 900 RETURN
- 910 GOTO 540
- 920 RETURN
-